package epoch.game.core.message;

import java.util.List;

import epoch.game.core.server.ISession;

/**
 * 消息接口
 * 
 * @author will
 *
 */
public interface IMessage{
	/**
	 * 消息id
	 * @return
	 */
	short getId();
	
	/**
	 * 消息所在的会话
	 * 
	 * @return
	 */
	ISession getSession();
	/**
	 * 设置消息的会话
	 * 
	 * @param session
	 */
	void setSession(ISession session);
	
	/**
	 * 获取发送者
	 * @return
	 */
	long getSender();
	
	/**
	 * 设置发送者
	 * @param sender
	 */
	void setSender(long sender);
	
	/**
	 * 接收者
	 * @return
	 */
	List<Long> getReceivers();
	
	/**
	 * 设置接收者
	 * @param receivers
	 */
	void setReceivers(List<Long> receivers);
	
	/**
	 * 获取参数
	 * @return
	 */
	<T> T getParameter();

	/**
	 * 设置参数
	 * @param param
	 */
	<T> void setParameter(T param);
	
	/**
	 * 目标队列
	 * @return
	 */
	String getQueue();
	
	/**
	 * 目标server
	 * @return
	 */
	String getServer();
}
